關於 HTTPS 的部分,我想分為三篇來讓大家比較好理解:
一開始的前 2 篇,會著重於「為什麼我們要用 HTTPS?」,使用 HTTPS 之後,如何幫我們抵擋駭客的入侵,並且會以有沒有 CA (Certificate Authority) 憑證為分水嶺,來跟大家解說為什麼要有 CA 憑證
第 3 篇,會告訴大家在每次 request 中,建立 HTTPS 中 "S" 的完整的流程,也就是 TLS/SSL handshake,讓我們每次的通訊都有 HTTPS 的保護
在一開始最土砲的 HTTP 上,我們的資料都是以 Plain Text 傳輸的,沒有任何的保護,就好像在裸奔一樣,任何人都可以輕易的監聽並取得資料
(圖片來源:https://dzone.com/articles/what-is-a-sniffing-attack)
那我們傳輸的資料就會輕易的被竊聽
這時呢,我們為了不被監聽者輕易讀取我們的資料,我們可以做加密 (Encryption) 的動作,我們先用最簡單的對稱加密 (也就是說,雙方的密鑰都是同一把),並加密我們的訊息,流程如下:
這時候,我們傳輸的資料就會是加密過的資訊,駭客就無法輕易解讀了
為什麼不用 ENCODE (編碼) 呢?
因為編碼的目的只是將我們的資料轉換成其他語言, 如果駭客知道我們是使用什麼語言,他可以轉換回來, 我們的資料一樣會被看光
為什麼不用 HASH (雜湊) 呢?
因為雜湊的目的是讓送出方的資料無法被解讀, 這樣的話取得方也沒辦法讀取資料
但這種方法還是有個小漏洞,那就是
當第一次傳輸的鑰匙被偷時,駭客就可以解密了
駭客的攻擊流程如下圖:
因此,對於 Sniffing attack,我們僅用對稱加密還是無法完美解決
因此,為了解決這個問題,我們就有非對稱加密來解決這個問題
非對稱加密的流程如下:
這樣一來,就只有 Person 2 能看到解密後的資料,詳細過程如下圖:
這時候,如果有駭客嘗試做 Sniffing attack,會發生什麼事呢?
如果駭客在 Step 2,將我們的 Public key 給偷走
當我們在 Step 3 時,我們經公鑰傳輸的資料,駭客也沒辦法用它取得的公鑰解開,這樣就解決對稱加密時遇到的問題了 🎉
但是先別高興得太早,事情哪有這麼簡單呢? 俗話說「你有張良計我有過牆梯」,那駭客自然就會有更厲害的招來突破這個安全網啦~
雖然非對稱式加密可以阻止駭客直接從旁邊知道你的資料 (Sniffing attack),但是當駭客直接介入我們的傳輸過程時,將傳輸的對象導向成駭客自己時,
➡️ 這時候,駭客就可以拿到 Person 2 的 Public key
➡️ 然後駭客將自己的 Public key (這裡稱 H-Public key) 傳給 Person 1
➡️ 這樣,Person 1 傳的訊息就會被駭客用 H-Private key 解開
➡️ 最後,駭客再用已取得的 Public key 加密回去,回傳給 Person 2,
➡️ Person 2 就會以為傳輸的過程沒問題
上述過程就是所謂的 中間人攻擊 (Middle man attack)
我們都已經知道 CLIENT 的 IP, MAC ADDRESS 了,為什麼還會被中間人攻擊呢?
其實駭客可以透過一些方法,將 Server 導向錯誤的 IP address, 以下是幾種常見的方法:
ARP 欺騙 (ARP spoofing):
攻擊者利用 ARP 協議的漏洞,偽造 ARP 回應,使受害者誤以為攻擊者的 MAC 地址是通信對象的 MAC 地址。
即使知道正確的 MAC 地址,攻擊者仍然可以使用這種方法欺騙我們的設備DNS 劫持 (DNS hijacking):
攻擊者綁架 DNS 查詢過程,將受害者引導至惡意網站。即使我們知道目標 IP 地址,攻擊者仍可在 DNS 查詢過程中進行攻擊
所以,即便我們已經使用的非對稱加密,駭客還是可以用中間人攻擊竊取我們的資訊